home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Maximum CD 2000 November
/
Maximum CD 2000 Nov.iso
/
AofE-Conquerers
/
age2xtrial.exe
/
CABFILE
/
MSGAME.CAB
/
Data
/
gamedata_x1.drs
/
Unnamed File 000030.bina
< prev
next >
Wrap
Text File
|
2000-07-18
|
55KB
|
2,629 lines
;if I'm short on resources, ask allies for some before using the market
(defrule
(player-in-game any-ally)
(players-building-type-count any-ally market > 0)
=>
(enable-timer 1 60)
(disable-self)
)
(defrule
(true)
=>
(set-goal resource-needed NO)
(disable-self)
)
;****************************************
(defrule
(goal resource-needed WOOD)
(timer-triggered t-tribute)
(not (stance-toward any-human ally) )
=>
(chat-to-player-using-id every-ally 22123) ;4
)
(defrule
(goal resource-needed FOOD)
(timer-triggered t-tribute)
(not (stance-toward any-human ally) )
=>
(chat-to-player-using-id every-ally 22122) ;3
)
(defrule
(goal resource-needed GOLD)
(timer-triggered t-tribute)
(not (stance-toward any-human ally) )
=>
(chat-to-player-using-id every-ally 22124) ;5
)
(defrule
(goal resource-needed STONE)
(timer-triggered t-tribute)
(not (stance-toward any-human ally) )
=>
(chat-to-player-using-id every-ally 22125) ;6
)
(defrule
(goal resource-needed WOOD)
(timer-triggered t-tribute)
(stance-toward any-human ally)
(not (goal wonder-attempt POSSIBLE) )
(or
(wood-amount > 250)
(and
(current-age < imperial-age)
(wood-amount > 150)
)
)
=>
(chat-to-player-using-id every-ally 22123) ;4
)
(defrule
(goal resource-needed FOOD)
(timer-triggered t-tribute)
(stance-toward any-human ally)
(or
(food-amount > 950)
(or
(and
(current-age == feudal-age)
(food-amount > 750)
)
(and
(current-age == imperial-age)
(food-amount > 250)
)
)
)
=>
(chat-to-player-using-id every-ally 22122) ;3
)
(defrule
(goal resource-needed GOLD)
(timer-triggered t-tribute)
(stance-toward any-human ally)
(not (goal wonder-attempt POSSIBLE) )
(or
(gold-amount > 750)
(and
(current-age != feudal-age)
(gold-amount > 150)
)
)
=>
(chat-to-player-using-id every-ally 22124) ;5
)
(defrule
(goal resource-needed STONE)
(timer-triggered t-tribute)
(stance-toward any-human ally)
(not (goal wonder-attempt POSSIBLE) )
(or
(stone-amount > 600)
(and
(not (goal castle-attempt YES) )
(stone-amount > 150)
)
)
=>
(chat-to-player-using-id every-ally 22125) ;6
)
(defrule
(goal resource-needed WOOD)
(timer-triggered t-tribute)
(stance-toward any-human ally)
(goal wonder-attempt POSSIBLE)
(wood-amount > 950)
=>
(chat-to-player-using-id every-ally 22123) ;4
)
(defrule
(goal resource-needed GOLD)
(timer-triggered t-tribute)
(stance-toward any-human ally)
(goal wonder-attempt POSSIBLE)
(gold-amount > 950)
=>
(chat-to-player-using-id every-ally 22123) ;4
)
(defrule
(goal resource-needed STONE)
(timer-triggered t-tribute)
(stance-toward any-human ally)
(goal wonder-attempt POSSIBLE)
(stone-amount > 950)
=>
(chat-to-player-using-id every-ally 22123) ;4
)
;***************************************
;FEUDAL MARKET
(defrule
(goal resource-needed WOOD)
(current-age == feudal-age)
(gold-amount > 400)
(can-buy-commodity wood)
(commodity-buying-price wood < 150)
=>
(chat-local-to-self "use market for wood")
(release-escrow gold)
(buy-commodity wood)
)
(defrule
(goal resource-needed FOOD)
(current-age == feudal-age)
(gold-amount > 400)
(can-buy-commodity food)
(commodity-buying-price food < 150)
=>
(chat-local-to-self "use market for food")
(release-escrow gold)
(buy-commodity food)
)
(defrule
(goal resource-needed GOLD)
(current-age == feudal-age)
(wood-amount > 300)
(not (goal sea-owner YES) )
(can-sell-commodity wood)
=>
(chat-local-to-self "sell wood for gold")
(release-escrow wood)
(sell-commodity wood)
)
(defrule
(goal resource-needed GOLD)
(current-age == feudal-age)
(food-amount > 900)
(can-sell-commodity food)
=>
(chat-local-to-self "sell food for gold")
(release-escrow food)
(sell-commodity food)
)
(defrule
(goal resource-needed GOLD)
(current-age == feudal-age)
(stone-amount > 225)
(can-sell-commodity stone)
(commodity-selling-price stone > 75)
(nor
(goal wall-build YES)
(goal castle-attempt YES)
)
=>
(chat-local-to-self "sell stone for gold")
(release-escrow stone)
(sell-commodity stone)
)
(defrule
(goal resource-needed STONE)
(current-age == feudal-age)
(gold-amount > 450)
(can-buy-commodity stone)
(commodity-buying-price stone < 200)
=>
(chat-local-to-self "use market for stone")
(release-escrow gold)
(buy-commodity stone)
)
;****************************
;CASTLE MARKET
(defrule
(goal resource-needed WOOD)
(current-age == castle-age)
(gold-amount > 950)
(can-buy-commodity wood)
(commodity-buying-price wood < 150)
=>
(chat-local-to-self "use market for wood")
(release-escrow gold)
(buy-commodity wood)
)
(defrule
(goal resource-needed FOOD)
(current-age == castle-age)
(gold-amount > 950)
(can-buy-commodity food)
(commodity-buying-price food < 150)
=>
(chat-local-to-self "use market for food")
(release-escrow gold)
(buy-commodity food)
)
(defrule
(goal resource-needed GOLD)
(current-age == castle-age)
(wood-amount > 450)
(not (goal sea-owner YES) )
(can-sell-commodity wood)
=>
(chat-local-to-self "sell wood for gold")
(release-escrow wood)
(sell-commodity wood)
)
(defrule
(goal resource-needed GOLD)
(current-age == castle-age)
(food-amount > 1100)
(can-sell-commodity food)
=>
(chat-local-to-self "sell food for gold")
(release-escrow food)
(sell-commodity food)
)
(defrule
(goal resource-needed GOLD)
(current-age == castle-age)
(stone-amount > 400)
(can-sell-commodity stone)
(commodity-selling-price stone > 75)
(nor
(goal wall-build YES)
(goal castle-attempt YES)
)
=>
(chat-local-to-self "sell stone for gold")
(release-escrow stone)
(sell-commodity stone)
(set-goal resource-needed 0)
)
(defrule
(goal resource-needed STONE)
(current-age == castle-age)
(gold-amount > 1000)
(can-buy-commodity stone)
(commodity-buying-price stone < 200)
=>
(chat-local-to-self "use market for stone")
(release-escrow gold)
(buy-commodity stone)
(set-goal resource-needed 0)
)
;****************************
;IMPERIAL MARKET
(defrule
(goal resource-needed WOOD)
(research-completed ri-guilds)
(can-buy-commodity wood)
(commodity-buying-price wood < 150)
(gold-amount > 1400)
=>
(chat-local-to-self "use market for wood")
(release-escrow gold)
(buy-commodity wood)
)
(defrule
(goal resource-needed FOOD)
(research-completed ri-guilds)
(can-buy-commodity food)
(commodity-buying-price food < 150)
(gold-amount > 1400)
=>
(chat-local-to-self "use market for food")
(release-escrow gold)
(buy-commodity food)
)
(defrule
(goal resource-needed GOLD)
(research-completed ri-guilds)
(not (goal sea-owner YES) )
(can-sell-commodity wood)
(or
(wood-amount > 1200)
(and
(nor
(goal wonder-attempt POSSIBLE)
(goal upgrade-conflict 33)
)
(wood-amount > 625)
)
)
=>
(chat-local-to-self "sell wood for gold")
(release-escrow wood)
(sell-commodity wood)
)
(defrule
(goal resource-needed GOLD)
(research-completed ri-guilds)
(food-amount > 1700)
(can-sell-commodity food)
=>
(chat-local-to-self "sell food for gold")
(release-escrow food)
(sell-commodity food)
)
(defrule
(goal resource-needed GOLD)
(research-completed ri-guilds)
(stone-amount > 500)
(can-sell-commodity stone)
(commodity-selling-price stone > 75)
(nor
(goal wall-build YES)
(or
(goal castle-attempt YES)
(goal wonder-attempt POSSIBLE)
)
)
=>
(chat-local-to-self "sell stone for gold")
(release-escrow stone)
(sell-commodity stone)
)
(defrule
(goal resource-needed STONE)
(research-completed ri-guilds)
(can-buy-commodity stone)
(commodity-buying-price stone < 200)
(gold-amount > 1400)
=>
(chat-local-to-self "use market for stone")
(release-escrow gold)
(buy-commodity stone)
)
;****************************
;Excess stuff
(defrule
(wood-amount > 1200)
(or
(food-amount < 1000)
(or
(gold-amount < 1000)
(stone-amount < 1000)
)
)
(can-sell-commodity wood)
=>
(chat-local-to-self "excess wood")
(release-escrow wood)
(sell-commodity wood)
)
(defrule
(food-amount > 1100)
(or
(wood-amount < 1000)
(or
(gold-amount < 1000)
(stone-amount < 1000)
)
)
(can-sell-commodity food)
=>
(chat-local-to-self "excess food")
(release-escrow food)
(sell-commodity food)
)
(defrule
(gold-amount > 1250)
(can-buy-commodity wood)
(commodity-buying-price wood < 50)
(or
(and
(not (goal upgrade-conflict 33) )
(wood-amount < 525)
)
(wood-amount < 1100)
)
=>
(chat-local-to-self "excess gold; buy wood")
(release-escrow gold)
(buy-commodity wood)
)
(defrule
(gold-amount > 1250)
(food-amount < 1600)
(can-buy-commodity food)
(commodity-buying-price food < 50)
=>
(chat-local-to-self "excess gold; buy food")
(release-escrow gold)
(buy-commodity food)
)
(defrule
(gold-amount > 1400)
(stone-amount < 650)
(can-buy-commodity stone)
(commodity-buying-price stone < 200)
=>
(chat-local-to-self "excess gold; buy stone")
(release-escrow gold)
(buy-commodity stone)
)
(defrule
(stone-amount > 1400)
(or
(wood-amount < 1100)
(or
(food-amount < 1600)
(gold-amount < 1200)
)
)
(can-sell-commodity stone)
=>
(chat-local-to-self "excess stone")
(release-escrow stone)
(sell-commodity stone)
)
;************************************************
;TIMER ONE
(defrule
(timer-triggered t-tribute)
(not (player-in-game any-human-ally) )
=>
(disable-timer t-tribute)
(enable-timer t-tribute 120)
)
;don't bug human allies too often
(defrule
(timer-triggered t-tribute)
(player-in-game any-human-ally)
=>
(disable-timer t-tribute)
(enable-timer t-tribute 300)
)
;**********************************************
;***********************************
;AGE ADVANCEMENT
(defrule
(goal age-advancement NO)
(current-age == dark-age)
(game-time >= 600)
(or
(players-current-age any-enemy > dark-age)
(civilian-population >= civ-dark-rush)
)
=>
(set-goal upgrade-conflict NOTICE)
)
(defrule
(goal age-advancement NO)
(current-age == feudal-age)
(current-age-time > 450)
(or
(players-current-age any-enemy > feudal-age)
(civilian-population >= civ-dark)
)
=>
(set-goal upgrade-conflict NOTICE)
)
(defrule
(goal age-advancement NO)
(current-age == castle-age)
(current-age-time > 300)
(or
(players-current-age any-enemy == imperial-age)
(civilian-population >= civ-feudal)
)
=>
(set-goal upgrade-conflict NOTICE)
)
(defrule
(can-research-with-escrow feudal-age)
=>
(release-escrow food)
(research feudal-age)
(set-goal resource-needed 0)
(set-goal age-advancement NOTICE)
(set-goal upgrade-conflict NO)
(disable-timer t-ageup)
(enable-timer t-ageup 140)
)
;advance to castle age
(defrule
(can-research-with-escrow castle-age)
=>
(release-escrow food)
(release-escrow gold)
(research castle-age)
(set-goal resource-needed 0)
(set-goal age-advancement NOTICE)
(set-goal upgrade-conflict NO)
(disable-timer t-ageup)
(enable-timer t-ageup 170)
)
;now advance to imperial
(defrule
(can-research-with-escrow imperial-age)
=>
(release-escrow food)
(release-escrow gold)
(research imperial-age)
(set-goal resource-needed 0)
(set-goal age-advancement NOTICE)
(set-goal upgrade-conflict NO)
(disable-timer t-ageup)
(enable-timer t-ageup 200)
)
;if we've failed to rise in age, reset goal age-advancement
(defrule
(current-age < imperial-age)
(timer-triggered t-ageup)
(goal age-advancement NOTICE)
=>
(disable-timer t-ageup)
(set-goal age-advancement NO)
)
;*************************************************************
(defrule
(not (map-type highland) )
=>
(set-strategic-number sn-minimum-water-body-size-for-dock 3000)
(disable-self)
)
;*************************************************************
;#load-if-defined SCENARIO-MAP
;(defrule
; (true)
;=>
; (set-goal 1 1)
; (chat-to-all-using-id 22145)
; (chat-to-all-using-id 22146)
;"If this is an all-land or an island map, then please"
;"rework thy AI script accordingly."
; (disable-self)
;)
;#end-if
;*******************************
#load-if-defined ARCHIPELAGO-MAP
(defrule
(true)
=>
(chat-local-to-self "detecting ocean map!")
(set-goal 1 1)
(disable-self)
)
#end-if
;*******************************
#load-if-defined ISLANDS-MAP
(defrule
(true)
=>
(chat-local-to-self "detecting ocean map!")
(set-goal 1 1)
(disable-self)
)
#end-if
;*******************************
#load-if-defined MIGRATION-MAP
(defrule
(true)
=>
(chat-local-to-self "detecting ocean map!")
(set-goal 1 1)
(disable-self)
)
#end-if
;*******************************
#load-if-defined TEAM-ISLANDS-MAP
(defrule
(true)
=>
(chat-local-to-self "detecting ocean map!")
(set-goal 1 1)
(disable-self)
)
#end-if
;*******************************
#load-if-defined BALTIC-MAP
(defrule
(true)
=>
(chat-local-to-self "detecting water map!")
(set-goal 1 1)
(disable-self)
)
#end-if
;*******************************
#load-if-defined COASTAL-MAP
(defrule
(true)
=>
(chat-local-to-self "detecting water map!")
(set-goal 1 1)
(disable-self)
)
#end-if
;*******************************
#load-if-defined CONTINENTAL-MAP
(defrule
(true)
=>
(chat-local-to-self "detecting water map!")
(set-goal 1 1)
(disable-self)
)
#end-if
;*******************************
#load-if-defined CRATER-LAKE-MAP
(defrule
(true)
=>
(chat-local-to-self "detecting water map!")
(set-goal 1 1)
(disable-self)
)
#end-if
;*******************************
#load-if-defined MEDITERRANEAN-MAP
(defrule
(true)
=>
(chat-local-to-self "detecting water map!")
(set-goal 1 1)
(disable-self)
)
#end-if
;*******************************
#load-if-defined RIVERS-MAP
(defrule
(true)
=>
(chat-local-to-self "detecting water map!")
(set-goal 1 1)
(disable-self)
)
#end-if
;*******************************
#load-if-defined ARABIA-MAP
(defrule
(true)
=>
(chat-local-to-self "detecting land map!")
(set-goal 1 0)
(disable-self)
)
#end-if
;*******************************
#load-if-defined BLACK-FOREST-MAP
(defrule
(true)
=>
(chat-local-to-self "detecting land map!")
(set-goal 1 0)
(disable-self)
)
#end-if
;*******************************
#load-if-defined FORTRESS-MAP
(defrule
(true)
=>
(chat-local-to-self "detecting land map!")
(set-goal 1 0)
(disable-self)
)
#end-if
;*******************************
#load-if-defined GOLD-RUSH-MAP
(defrule
(true)
=>
(chat-local-to-self "detecting land map!")
(set-goal 1 0)
(disable-self)
)
(defrule
(current-age >= feudal-age)
(not (strategic-number sn-maximum-town-size == 40) )
=>
(set-strategic-number sn-maximum-town-size 40)
)
#end-if
;*******************************
#load-if-defined HIGHLAND-MAP
(defrule
(true)
=>
(chat-local-to-self "detecting land map!")
(set-goal 1 0)
(disable-self)
)
#end-if
;*************************************************************
(defrule
(goal 1 1)
=>
(set-strategic-number sn-number-boat-explore-groups 1)
(disable-self)
)
;make docks
(defrule
(goal 1 1)
(building-type-count-total dock == 0)
(building-type-count-total lumber-camp > 0)
(can-build dock)
=>
(build dock)
)
(defrule
(goal 1 1)
(current-age >= feudal-age)
(wood-amount > 400)
(building-type-count-total dock < 2)
(can-build-with-escrow dock)
=>
(release-escrow wood)
(build dock)
)
(defrule
(goal 1 1)
(current-age >= castle-age)
(wood-amount > 1000)
(building-type-count-total dock < 2)
(can-build-with-escrow dock)
=>
(release-escrow wood)
(build dock)
)
;build fishing ships in dark age
(defrule
(goal 1 1)
(current-age == dark-age)
(building-type-count-total lumber-camp > 0)
(civilian-population < 25)
(unit-type-count-total fishing-ship < ten-percent-pop)
(can-train fishing-ship)
=>
(train fishing-ship)
)
;feudal boats
(defrule
(goal 1 1)
(current-age == feudal-age)
(civilian-population < civ-feudal)
(unit-type-count-total fishing-ship < ten-percent-pop)
(can-train fishing-ship)
=>
(train fishing-ship)
)
;castle boats
(defrule
(goal 1 1)
(civilian-population < civ-castle)
(unit-type-count-total fishing-ship < ten-percent-pop)
(current-age >= castle-age)
(wood-amount > 1100)
(can-train fishing-ship)
=>
(train fishing-ship)
)
;*********************************************
;starting goals
(defrule
(true)
=>
(set-goal resource-needed NO) ;goal 5
(set-goal age-advancement NO) ;goal 14
(set-goal upgrade-conflict NO) ;goal 16
(disable-self)
)
#load-if-defined DIFFICULTY-HARDEST
(defrule
(true)
=>
(disable-timer t-chatmore)
(enable-timer t-chatmore 1200)
(disable-self)
)
(defrule
(timer-triggered t-chatmore)
=>
(cc-add-resource wood 500)
(cc-add-resource food 500)
(cc-add-resource gold 500)
(cc-add-resource stone 500)
(disable-timer t-chatmore)
(enable-timer t-chatmore 1200)
)
#end-if
;********************************
;UPGRADES & BUILDS RELATED TO OTHER PLAYERS
;**************************************
;FEUDAL MARKET
(defrule
(goal resource-needed WOOD)
(current-age == feudal-age)
(gold-amount > 400)
(can-buy-commodity wood)
(commodity-buying-price wood < 150)
=>
(chat-local-to-self "use market for wood")
(release-escrow gold)
(buy-commodity wood)
)
(defrule
(goal resource-needed FOOD)
(current-age == feudal-age)
(gold-amount > 400)
(can-buy-commodity food)
(commodity-buying-price food < 150)
=>
(chat-local-to-self "use market for food")
(release-escrow gold)
(buy-commodity food)
)
(defrule
(goal resource-needed GOLD)
(current-age == feudal-age)
(wood-amount > 300)
(can-sell-commodity wood)
=>
(chat-local-to-self "sell wood for gold")
(release-escrow wood)
(sell-commodity wood)
)
(defrule
(goal resource-needed GOLD)
(current-age == feudal-age)
(food-amount > 900)
(can-sell-commodity food)
=>
(chat-local-to-self "sell food for gold")
(release-escrow food)
(sell-commodity food)
)
(defrule
(goal resource-needed GOLD)
(current-age == feudal-age)
(stone-amount > 300)
(can-sell-commodity stone)
(commodity-selling-price stone > 75)
=>
(chat-local-to-self "sell stone for gold")
(release-escrow stone)
(sell-commodity stone)
)
(defrule
(goal resource-needed STONE)
(current-age == feudal-age)
(gold-amount > 450)
(can-buy-commodity stone)
(commodity-buying-price stone < 200)
=>
(chat-local-to-self "use market for stone")
(release-escrow gold)
(buy-commodity stone)
)
;****************************
;CASTLE MARKET
(defrule
(goal resource-needed WOOD)
(current-age == castle-age)
(gold-amount > 950)
(can-buy-commodity wood)
(commodity-buying-price wood < 150)
=>
(chat-local-to-self "use market for wood")
(release-escrow gold)
(buy-commodity wood)
)
(defrule
(goal resource-needed FOOD)
(current-age == castle-age)
(gold-amount > 950)
(can-buy-commodity food)
(commodity-buying-price food < 150)
=>
(chat-local-to-self "use market for food")
(release-escrow gold)
(buy-commodity food)
)
(defrule
(goal resource-needed GOLD)
(current-age == castle-age)
(wood-amount > 1100)
(can-sell-commodity wood)
=>
(chat-local-to-self "sell wood for gold")
(release-escrow wood)
(sell-commodity wood)
)
(defrule
(goal resource-needed GOLD)
(current-age == castle-age)
(food-amount > 1100)
(can-sell-commodity food)
=>
(chat-local-to-self "sell food for gold")
(release-escrow food)
(sell-commodity food)
)
(defrule
(goal resource-needed GOLD)
(current-age == castle-age)
(stone-amount > 1100)
(can-sell-commodity stone)
(commodity-selling-price stone > 75)
=>
(chat-local-to-self "sell stone for gold")
(release-escrow stone)
(sell-commodity stone)
(set-goal resource-needed 0)
)
(defrule
(goal resource-needed STONE)
(current-age == castle-age)
(gold-amount > 1000)
(can-buy-commodity stone)
(commodity-buying-price stone < 200)
=>
(chat-local-to-self "use market for stone")
(release-escrow gold)
(buy-commodity stone)
(set-goal resource-needed 0)
)
;****************************
;IMPERIAL MARKET
(defrule
(goal resource-needed WOOD)
(research-completed ri-guilds)
(can-buy-commodity wood)
(commodity-buying-price wood < 150)
(gold-amount > 1400)
=>
(chat-local-to-self "use market for wood")
(release-escrow gold)
(buy-commodity wood)
)
(defrule
(goal resource-needed FOOD)
(research-completed ri-guilds)
(can-buy-commodity food)
(commodity-buying-price food < 150)
(gold-amount > 1400)
=>
(chat-local-to-self "use market for food")
(release-escrow gold)
(buy-commodity food)
)
(defrule
(goal resource-needed GOLD)
(research-completed ri-guilds)
(can-sell-commodity wood)
(wood-amount > 1200)
=>
(chat-local-to-self "sell wood for gold")
(release-escrow wood)
(sell-commodity wood)
)
(defrule
(goal resource-needed GOLD)
(research-completed ri-guilds)
(food-amount > 1100)
(can-sell-commodity food)
=>
(chat-local-to-self "sell food for gold")
(release-escrow food)
(sell-commodity food)
)
(defrule
(goal resource-needed GOLD)
(research-completed ri-guilds)
(stone-amount > 1100)
(can-sell-commodity stone)
(commodity-selling-price stone > 75)
=>
(chat-local-to-self "sell stone for gold")
(release-escrow stone)
(sell-commodity stone)
)
(defrule
(goal resource-needed STONE)
(research-completed ri-guilds)
(can-buy-commodity stone)
(commodity-buying-price stone < 200)
(gold-amount > 1200)
=>
(chat-local-to-self "use market for stone")
(release-escrow gold)
(buy-commodity stone)
)
;****************************
;Excess stuff
(defrule
(wood-amount > 1200)
(or
(gold-amount < 1000)
(stone-amount < 1000)
)
(can-sell-commodity wood)
=>
(chat-local-to-self "excess wood")
(release-escrow wood)
(sell-commodity wood)
)
(defrule
(food-amount > 1100)
(or
(wood-amount < 1000)
(or
(gold-amount < 1000)
(stone-amount < 1000)
)
)
(can-sell-commodity food)
=>
(chat-local-to-self "excess food")
(release-escrow food)
(sell-commodity food)
)
(defrule
(difficulty <= hard)
(current-age == imperial-age)
(can-sell-commodity food)
=>
(chat-local-to-self "sell that food!")
(release-escrow food)
(sell-commodity food)
)
(defrule
(gold-amount > 1200)
(can-buy-commodity wood)
(commodity-buying-price wood < 50)
(wood-amount < 1000)
=>
(chat-local-to-self "excess gold; buy wood")
(release-escrow gold)
(buy-commodity wood)
)
(defrule
(gold-amount > 1200)
(food-amount < 200)
(can-buy-commodity food)
(commodity-buying-price food < 50)
=>
(chat-local-to-self "excess gold; buy food")
(release-escrow gold)
(buy-commodity food)
)
(defrule
(gold-amount > 1200)
(stone-amount < 1000)
(can-buy-commodity stone)
(commodity-buying-price stone < 200)
=>
(chat-local-to-self "excess gold; buy stone")
(release-escrow gold)
(buy-commodity stone)
)
(defrule
(stone-amount > 1200)
(or
(wood-amount < 1000)
(gold-amount < 1000)
)
(can-sell-commodity stone)
=>
(chat-local-to-self "excess stone")
(release-escrow stone)
(sell-commodity stone)
)
;************************************************
;TIMER ONE
(defrule
(timer-triggered t-tribute)
(not (player-in-game any-human-ally) )
=>
(disable-timer t-tribute)
(enable-timer t-tribute 120)
)
;don't bug human allies too often
(defrule
(timer-triggered t-tribute)
(player-in-game any-human-ally)
=>
(disable-timer t-tribute)
(enable-timer t-tribute 300)
)
;**********************************************
;build that wonder
(defrule
(current-age == imperial-age)
(population > unit-max)
(wood-amount >= 500)
(gold-amount >= 500)
(stone-amount >= 500)
=>
(set-goal upgrade-conflict NOTICE)
(disable-self)
)
(defrule
(can-build-with-escrow wonder)
=>
(release-escrow wood)
(release-escrow gold)
(release-escrow stone)
(set-strategic-number sn-maximum-town-size 10)
(set-strategic-number sn-percent-civilian-builders 90)
(set-strategic-number sn-cap-civilian-builders 50)
(set-strategic-number sn-percent-civilian-gatherers 10)
(build wonder)
(disable-self)
)
;*********************************
;gathering percentages
(defrule
(true)
=>
(set-strategic-number sn-wood-gatherer-percentage 10)
(set-strategic-number sn-food-gatherer-percentage 90)
(set-strategic-number sn-gold-gatherer-percentage 0)
(set-strategic-number sn-stone-gatherer-percentage 0)
(disable-self)
)
;DARK AGE
(defrule
(current-age == dark-age)
(wood-amount < 100)
(or
(building-type-count-total mill == 0)
(building-type-count-total lumber-camp == 0)
)
=>
(set-goal resource-needed WOOD)
)
(defrule
(goal upgrade-conflict NOTICE)
(current-age == dark-age)
(food-amount < 500)
=>
(set-goal resource-needed FOOD)
)
;***********************************************
;***********************************************
(defrule
(goal resource-needed NO)
(current-age == dark-age)
(civilian-population < 10)
(not (strategic-number sn-wood-gatherer-percentage == 10) )
=>
(set-strategic-number sn-wood-gatherer-percentage 10)
(set-strategic-number sn-food-gatherer-percentage 90)
(set-strategic-number sn-gold-gatherer-percentage 0)
(set-strategic-number sn-stone-gatherer-percentage 0)
)
(defrule
(goal resource-needed WOOD)
(current-age == dark-age)
(civilian-population < 10)
(not (strategic-number sn-wood-gatherer-percentage == 20) )
=>
(set-strategic-number sn-wood-gatherer-percentage 30)
(set-strategic-number sn-food-gatherer-percentage 70)
(set-strategic-number sn-gold-gatherer-percentage 0)
(set-strategic-number sn-stone-gatherer-percentage 0)
)
(defrule
(goal resource-needed NO)
(current-age == dark-age)
(civilian-population >= 10)
(not (strategic-number sn-wood-gatherer-percentage == 30) )
=>
(set-strategic-number sn-wood-gatherer-percentage 40)
(set-strategic-number sn-food-gatherer-percentage 60)
)
(defrule
(goal resource-needed WOOD)
(current-age == dark-age)
(civilian-population >= 10)
(not (strategic-number sn-wood-gatherer-percentage == 40) )
=>
(set-strategic-number sn-wood-gatherer-percentage 50)
(set-strategic-number sn-food-gatherer-percentage 50)
)
(defrule
(goal resource-needed FOOD)
(current-age == dark-age)
(civilian-population >= 10)
(not (strategic-number sn-wood-gatherer-percentage == 20) )
=>
(set-strategic-number sn-wood-gatherer-percentage 30)
(set-strategic-number sn-food-gatherer-percentage 70)
)
;***********************************************
;***********************************************
;FEUDAL AGE
(defrule
(current-age == feudal-age)
=>
(set-goal resource-needed NO)
)
(defrule
(goal resource-supp FOOD-ONLY)
(current-age == feudal-age)
(food-amount < 150)
=>
(set-goal resource-needed FOOD)
)
(defrule
(goal resource-supp WOOD-FOOD)
(current-age == feudal-age)
(wood-amount < 75)
(food-amount > 100)
=>
(set-goal resource-needed WOOD)
)
(defrule
(goal resource-supp WOOD-FOOD)
(current-age == feudal-age)
(wood-amount > 75)
(food-amount < 100)
=>
(set-goal resource-needed FOOD)
)
(defrule
(goal resource-supp FOOD-GOLD)
(current-age == feudal-age)
(food-amount > 100)
(gold-amount < 50)
=>
(set-goal resource-needed GOLD)
)
(defrule
(goal resource-supp FOOD-GOLD)
(current-age == feudal-age)
(food-amount < 100)
(gold-amount > 50)
=>
(set-goal resource-needed FOOD)
)
(defrule
(current-age == feudal-age)
(wood-amount < 175)
(building-type-count-total market == 0)
=>
(set-goal resource-needed WOOD)
)
(defrule
(goal upgrade-conflict NOTICE)
(current-age == feudal-age)
(food-amount < 800)
(gold-amount > 200)
=>
(set-goal resource-needed FOOD)
)
(defrule
(goal upgrade-conflict NOTICE)
(current-age == feudal-age)
(food-amount > 800)
(gold-amount < 200)
=>
(set-goal resource-needed GOLD)
)
;***********************************************
;***********************************************
(defrule
(goal resource-needed NO)
(current-age == feudal-age)
=>
(set-strategic-number sn-wood-gatherer-percentage 45)
(set-strategic-number sn-food-gatherer-percentage 40)
(set-strategic-number sn-gold-gatherer-percentage 10)
(set-strategic-number sn-stone-gatherer-percentage 5)
)
(defrule
(goal resource-needed WOOD)
(current-age == feudal-age)
=>
(set-strategic-number sn-wood-gatherer-percentage 55)
(set-strategic-number sn-food-gatherer-percentage 30)
(set-strategic-number sn-gold-gatherer-percentage 10)
(set-strategic-number sn-stone-gatherer-percentage 5)
)
(defrule
(goal resource-needed FOOD)
(current-age == feudal-age)
=>
(set-strategic-number sn-wood-gatherer-percentage 35)
(set-strategic-number sn-food-gatherer-percentage 50)
(set-strategic-number sn-gold-gatherer-percentage 10)
(set-strategic-number sn-stone-gatherer-percentage 5)
)
(defrule
(goal resource-needed GOLD)
(current-age == feudal-age)
=>
(set-strategic-number sn-wood-gatherer-percentage 40)
(set-strategic-number sn-food-gatherer-percentage 35)
(set-strategic-number sn-gold-gatherer-percentage 20)
(set-strategic-number sn-stone-gatherer-percentage 5)
)
;***********************************************
;***********************************************
;CASTLE AGE
(defrule
(current-age == castle-age)
=>
(set-goal resource-needed NO)
)
(defrule
(goal resource-supp FOOD-ONLY)
(current-age == castle-age)
(food-amount < 250)
=>
(set-goal resource-needed FOOD)
)
(defrule
(current-age == castle-age)
(goal resource-supp GOLD-ONLY)
(gold-amount < 475)
=>
(set-goal resource-needed GOLD)
)
(defrule
(goal resource-supp WOOD-FOOD)
(current-age == castle-age)
(wood-amount < 150)
(food-amount > 200)
=>
(set-goal resource-needed WOOD)
)
(defrule
(goal resource-supp WOOD-FOOD)
(current-age == castle-age)
(wood-amount > 150)
(food-amount < 200)
=>
(set-goal resource-needed FOOD)
)
(defrule
(goal resource-supp WOOD-STONE)
(current-age == castle-age)
(wood-amount > 200)
(stone-amount < 300)
=>
(set-goal resource-needed STONE)
)
(defrule
(goal resource-supp WOOD-STONE)
(current-age == castle-age)
(wood-amount < 200)
(stone-amount > 300)
=>
(set-goal resource-needed WOOD)
)
(defrule
(goal resource-supp FOOD-GOLD)
(current-age == castle-age)
(food-amount > 350)
(gold-amount < 200)
=>
(set-goal resource-needed GOLD)
)
(defrule
(goal resource-supp FOOD-GOLD)
(current-age == castle-age)
(food-amount < 350)
(gold-amount > 200)
=>
(set-goal resource-needed FOOD)
)
(defrule
(current-age == castle-age)
(wood-amount < 200)
(building-type-count-total university == 0)
=>
(set-goal resource-needed WOOD)
)
(defrule
(goal upgrade-conflict NOTICE)
(current-age == castle-age)
(food-amount < 1000)
(gold-amount > 800)
=>
(set-goal resource-needed FOOD)
)
(defrule
(goal upgrade-conflict NOTICE)
(current-age == castle-age)
(food-amount > 1000)
(gold-amount < 800)
=>
(set-goal resource-needed GOLD)
)
;***********************************************
;IMPERIAL AGE
(defrule
(current-age == imperial-age)
=>
(set-goal resource-needed NO)
)
(defrule
(goal resource-supp FOOD-ONLY)
(current-age == imperial-age)
(food-amount < 250)
=>
(set-goal resource-needed FOOD)
)
(defrule
(goal resource-supp GOLD-ONLY)
(current-age == imperial-age)
(gold-amount < 475)
=>
(set-goal resource-needed GOLD)
)
(defrule
(goal resource-supp WOOD-FOOD)
(current-age == imperial-age)
(wood-amount < 600)
(food-amount > 500)
=>
(set-goal resource-needed WOOD)
)
(defrule
(goal resource-supp WOOD-FOOD)
(current-age == imperial-age)
(wood-amount > 600)
(food-amount < 500)
=>
(set-goal resource-needed FOOD)
)
(defrule
(goal resource-supp WOOD-STONE)
(current-age == imperial-age)
(wood-amount > 400)
(stone-amount < 400)
=>
(set-goal resource-needed STONE)
)
(defrule
(goal resource-supp WOOD-STONE)
(current-age == imperial-age)
(wood-amount < 400)
(stone-amount > 400)
=>
(set-goal resource-needed WOOD)
)
(defrule
(goal resource-supp FOOD-GOLD)
(current-age == imperial-age)
(food-amount > 1600)
(gold-amount < 1200)
=>
(set-goal resource-needed GOLD)
)
(defrule
(goal resource-supp FOOD-GOLD)
(current-age == imperial-age)
(food-amount < 1600)
(gold-amount > 1200)
=>
(set-goal resource-needed FOOD)
)
(defrule
(current-age == imperial-age)
(stone-amount < 1000)
=>
(set-goal resource-needed STONE)
)
;***********************************************
;WONDERING
(defrule
(wood-amount < 1000)
(gold-amount > 1000)
(stone-amount > 1000)
=>
(set-goal resource-needed WOOD)
)
(defrule
(wood-amount > 1000)
(gold-amount < 1000)
(stone-amount > 1000)
=>
(set-goal resource-needed GOLD)
)
(defrule
(wood-amount > 1000)
(gold-amount > 1000)
(stone-amount < 1000)
=>
(set-goal resource-needed STONE)
)
;***********************************************
;***********************************************
(defrule
(goal resource-needed NO)
(current-age >= castle-age)
=>
(set-strategic-number sn-wood-gatherer-percentage 40)
(set-strategic-number sn-food-gatherer-percentage 35)
(set-strategic-number sn-gold-gatherer-percentage 15)
(set-strategic-number sn-stone-gatherer-percentage 10)
)
;extra wood
(defrule
(goal resource-needed WOOD)
(current-age >= castle-age)
=>
(set-strategic-number sn-wood-gatherer-percentage 45)
(set-strategic-number sn-food-gatherer-percentage 30)
(set-strategic-number sn-gold-gatherer-percentage 15)
(set-strategic-number sn-stone-gatherer-percentage 10)
)
;extra food
(defrule
(goal resource-needed FOOD)
(current-age >= castle-age)
=>
(set-strategic-number sn-wood-gatherer-percentage 30)
(set-strategic-number sn-food-gatherer-percentage 45)
(set-strategic-number sn-gold-gatherer-percentage 15)
(set-strategic-number sn-stone-gatherer-percentage 10)
)
;extra gold
(defrule
(goal resource-needed GOLD)
(current-age >= castle-age)
=>
(set-strategic-number sn-wood-gatherer-percentage 35)
(set-strategic-number sn-food-gatherer-percentage 30)
(set-strategic-number sn-gold-gatherer-percentage 25)
(set-strategic-number sn-stone-gatherer-percentage 10)
)
;extra stone
(defrule
(goal resource-needed STONE)
(current-age >= castle-age)
=>
(set-strategic-number sn-wood-gatherer-percentage 35)
(set-strategic-number sn-food-gatherer-percentage 30)
(set-strategic-number sn-gold-gatherer-percentage 15)
(set-strategic-number sn-stone-gatherer-percentage 20)
)
;imperial age
(defrule
(difficulty <= hard)
(or
(current-age == imperial-age)
(and
(current-age == castle-age)
(and
(current-age-time > 60)
(goal age-advancement NOTICE)
)
)
)
=>
(set-strategic-number sn-wood-gatherer-percentage 30)
(set-strategic-number sn-food-gatherer-percentage 0)
(set-strategic-number sn-gold-gatherer-percentage 30)
(set-strategic-number sn-stone-gatherer-percentage 40)
)
;*******************************************************
;*******************************************************
;upgrades
;*************************************************
(defrule
(or
(current-age >= feudal-age)
(goal upgrade-conflict NOTICE)
)
=>
(set-escrow-percentage wood 50)
(set-escrow-percentage food 50)
(set-escrow-percentage gold 50)
(set-escrow-percentage stone 50)
)
;********************************************
(defrule
(goal upgrade-conflict NO)
(current-age >= feudal-age)
=>
(generate-random-number 47)
)
;*************
;TOWN CENTER RESEARCH
(defrule ;50 gold
(goal upgrade-conflict NO)
(civilian-population >= 25)
(random-number <= 1)
(building-type-count town-center > 0)
(research-available ri-loom)
(or
(gold-amount > 250)
(goal age-advancement NOTICE)
)
=>
(set-goal upgrade-conflict 1)
(set-goal resource-supp GOLD-ONLY)
)
(defrule
(goal upgrade-conflict 1)
(can-research-with-escrow ri-loom)
=>
(release-escrow gold)
(research ri-loom)
(set-goal upgrade-conflict NO)
)
(defrule ;75 food
(goal upgrade-conflict NO)
(random-number <= 2)
(building-type-count town-center > 0)
(research-available ri-town-watch)
(or
(goal age-advancement NOTICE)
(food-amount > 700)
)
=>
(set-goal upgrade-conflict 2)
(set-goal resource-supp FOOD-ONLY)
)
(defrule
(goal upgrade-conflict 2)
(can-research-with-escrow ri-town-watch)
=>
(release-escrow food)
(research ri-town-watch)
(set-goal upgrade-conflict NO)
)
(defrule ;50 wood, 175 food
(difficulty <= moderate)
(can-research-with-escrow ri-wheel-barrow)
(nor
(goal upgrade-conflict NOTICE)
(can-research ri-wheel-barrow)
)
(or
(current-age > feudal-age)
(goal age-advancement NOTICE)
)
=>
(release-escrow wood)
(release-escrow food)
(research ri-wheel-barrow)
)
(defrule
(difficulty <= moderate)
(can-research ri-wheel-barrow)
(not (goal upgrade-conflict NOTICE) )
(or
(current-age > feudal-age)
(goal age-advancement NOTICE)
)
=>
(research ri-wheel-barrow)
)
(defrule ;200 wood, 300 food
(civilian-population >= civ-castle)
(difficulty <= hard)
(can-research-with-escrow ri-hand-cart)
(nor
(goal upgrade-conflict NOTICE)
(can-research ri-hand-cart)
)
=>
(release-escrow wood)
(release-escrow food)
(research ri-hand-cart)
)
(defrule
(civilian-population >= civ-castle)
(difficulty <= hard)
(can-research ri-hand-cart)
(not (goal upgrade-conflict NOTICE) )
=>
(research ri-hand-cart)
)
;*************
;MINING-CAMP
(defrule ;75 wood, 100 food
(goal upgrade-conflict NO)
(difficulty <= moderate)
(random-number <= 3)
(civilian-population >= civ-castle)
(building-type-count mining-camp > 1)
(research-completed ri-gold-mining)
(research-available ri-stone-mining)
=>
(set-goal upgrade-conflict 3)
(set-goal resource-supp WOOD-FOOD)
)
(defrule ;150 wood, 200 food
(goal upgrade-conflict NO)
(goal resource-needed STONE)
(difficulty <= hard)
(random-number <= 3)
(civilian-population >= civ-castle)
(building-type-count mining-camp > 0)
(research-completed ri-gold-shaft-mining)
(research-available ri-stone-shaft-mining)
=>
(set-goal upgrade-conflict 3)
(set-goal resource-supp WOOD-FOOD)
)
(defrule
(goal upgrade-conflict 3)
(or
(can-research-with-escrow ri-stone-mining)
(can-research-with-escrow ri-stone-shaft-mining)
)
=>
(release-escrow wood)
(release-escrow food)
(research ri-stone-mining)
(research ri-stone-shaft-mining)
(set-goal upgrade-conflict NO)
)
(defrule ;75 wood, 100 food
(goal upgrade-conflict NO)
(difficulty <= moderate)
(current-age > feudal-age)
(random-number <= 4)
(civilian-population >= civ-castle)
(building-type-count mining-camp > 0)
(research-available ri-gold-mining)
=>
(set-goal upgrade-conflict 4)
(set-goal resource-supp WOOD-FOOD)
)
(defrule ;150 wood, 200 food
(goal upgrade-conflict NO)
(difficulty <= hard)
(random-number <= 4)
(civilian-population >= civ-castle)
(building-type-count mining-camp > 0)
(research-available ri-gold-shaft-mining)
=>
(set-goal upgrade-conflict 4)
(set-goal resource-supp WOOD-FOOD)
)
(defrule
(goal upgrade-conflict 4)
(or
(can-research-with-escrow ri-gold-mining)
(can-research-with-escrow ri-gold-shaft-mining)
)
=>
(release-escrow wood)
(release-escrow food)
(research ri-gold-mining)
(research ri-gold-shaft-mining)
(set-goal upgrade-conflict NO)
)
;*************
;LUMBER-CAMP
(defrule ;50 wood, 100 food
(goal upgrade-conflict NO)
(difficulty <= moderate)
(random-number <= 5)
(building-type-count lumber-camp > 0)
(research-available ri-double-bit-axe)
(or
(current-age > feudal-age)
(goal age-advancement NOTICE)
)
=>
(set-goal upgrade-conflict 5)
(set-goal resource-supp WOOD-FOOD)
)
(defrule ;100 wood, 150 food
(goal upgrade-conflict NO)
(difficulty <= moderate)
(random-number <= 5)
(civilian-population >= civ-castle)
(building-type-count lumber-camp > 0)
(research-available ri-bow-saw)
=>
(set-goal upgrade-conflict 5)
(set-goal resource-supp WOOD-FOOD)
)
(defrule ;200 wood, 300 food
(goal upgrade-conflict NO)
(difficulty <= hard)
(random-number <= 5)
(civilian-population >= civ-castle)
(building-type-count lumber-camp > 0)
(research-available ri-two-man-saw)
=>
(set-goal upgrade-conflict 5)
(set-goal resource-supp WOOD-FOOD)
)
(defrule
(goal upgrade-conflict 5)
(or
(can-research-with-escrow ri-double-bit-axe)
(or
(can-research-with-escrow ri-bow-saw)
(can-research-with-escrow ri-two-man-saw)
)
)
=>
(release-escrow wood)
(release-escrow food)
(research ri-double-bit-axe)
(research ri-bow-saw)
(research ri-two-man-saw)
(set-goal upgrade-conflict NO)
)
;*************
;MILL
(defrule ;75 wood, 75 food
(goal upgrade-conflict NO)
(difficulty <= moderate)
(random-number <= 6)
(building-type-count-total farm >= 8)
(building-type-count mill > 0)
(research-available ri-horse-collar)
(or
(current-age > feudal-age)
(goal age-advancement NOTICE)
)
=>
(set-goal upgrade-conflict 6)
(set-goal resource-supp WOOD-FOOD)
)
(defrule ;125 wood, 125 food
(goal upgrade-conflict NO)
(difficulty <= moderate)
(random-number <= 6)
(building-type-count-total farm >= 10)
(building-type-count mill > 0)
(research-available ri-heavy-plow)
=>
(set-goal upgrade-conflict 6)
(set-goal resource-supp WOOD-FOOD)
)
(defrule ;250 wood, 250 food
(goal upgrade-conflict NO)
(difficulty <= hard)
(random-number <= 6)
(building-type-count-total farm >= 12)
(building-type-count mill > 0)
(research-available ri-crop-rotation)
=>
(set-goal upgrade-conflict 6)
(set-goal resource-supp WOOD-FOOD)
)
(defrule
(goal upgrade-conflict 6)
(or
(can-research-with-escrow ri-horse-collar)
(or
(can-research-with-escrow ri-heavy-plow)
(can-research-with-escrow ri-crop-rotation)
)
)
=>
(release-escrow wood)
(release-escrow food)
(research ri-horse-collar)
(research ri-heavy-plow)
(research ri-crop-rotation)
(set-goal upgrade-conflict NO)
)
;*************
;MARKET
(defrule
(can-research ri-caravan)
(or
(unit-type-count-total trade-cart > 0)
(unit-type-count-total trade-cog > 0)
)
=>
(research ri-caravan)
)
(defrule ;100 food, 100 gold
(player-in-game any-ally)
(building-type-count market > 0)
(can-research-with-escrow ri-cartography)
(or
(current-age > feudal-age)
(or
(goal age-advancement NOTICE)
(gold-amount > 300)
)
)
=>
(release-escrow food)
(release-escrow gold)
(research ri-cartography)
)
(defrule ;300 food, 200 gold
(can-research-with-escrow ri-guilds)
=>
(release-escrow food)
(release-escrow gold)
(research ri-guilds)
)
;*************
;UNIVERSITY
(defrule ;200 wood, 300 stone
(goal upgrade-conflict NO)
(random-number <= 8)
(building-type-count university > 0)
(research-available ri-stonecutting)
=>
(set-goal upgrade-conflict 8)
(set-goal resource-supp WOOD-STONE)
)
(defrule
(goal upgrade-conflict 8)
(can-research-with-escrow ri-stonecutting)
=>
(release-escrow wood)
(release-escrow stone)
(research ri-stonecutting)
(set-goal upgrade-conflict NO)
)
;***************************************
;========================DARK AGE RULES
(defrule
(true)
=>
(set-strategic-number sn-coop-share-information 1)
(set-strategic-number sn-maximum-town-size 15)
(set-strategic-number sn-zero-priority-distance 250)
(set-strategic-number sn-maximum-gaia-attack-response 2)
(set-strategic-number sn-minimum-boar-hunt-group-size 5)
(set-strategic-number sn-stone-dropsite-distance 3)
(set-strategic-number sn-gold-dropsite-distance 3)
(set-strategic-number sn-retask-gather-amount 20)
(set-strategic-number sn-camp-max-distance 20)
(set-strategic-number sn-mill-max-distance 20)
(set-strategic-number sn-group-form-distance 10)
(disable-self)
)
(defrule
(true)
=>
(set-strategic-number sn-allow-civilian-defense 1)
(set-strategic-number sn-town-defend-priority 1)
(set-strategic-number sn-gold-defend-priority 2)
(set-strategic-number sn-stone-defend-priority 3)
(set-strategic-number sn-forage-defend-priority 0)
(set-strategic-number sn-relic-defend-priority 0)
(set-strategic-number sn-cap-civilian-builders 8)
(set-strategic-number sn-cap-civilian-gatherers 100)
(set-strategic-number sn-minimum-civilian-explorers 0)
(set-strategic-number sn-cap-civilian-explorers 0)
(set-strategic-number sn-percent-civilian-explorers 0)
(disable-self)
)
(defrule
(true)
=>
(set-strategic-number sn-maximum-wood-drop-distance 20)
(set-strategic-number sn-maximum-food-drop-distance 20)
(set-strategic-number sn-maximum-hunt-drop-distance 30)
(set-strategic-number sn-maximum-fish-boat-drop-distance 30)
(set-strategic-number sn-maximum-gold-drop-distance 20)
(set-strategic-number sn-maximum-stone-drop-distance 20)
(disable-self)
)
(defrule
(difficulty <= hard)
=>
(set-strategic-number sn-maximum-fish-boat-drop-distance 7)
(disable-self)
)
;start exploring
(defrule
(or
(game-time > 600)
(and
(starting-resources < high-resources)
(difficulty > hardest)
)
)
=>
(set-strategic-number sn-percent-civilian-builders 15)
(set-strategic-number sn-percent-civilian-gatherers 85)
(disable-self)
)
(defrule
(or
(starting-resources == high-resources)
(difficulty == hardest)
)
=>
(set-strategic-number sn-percent-civilian-builders 85)
(set-strategic-number sn-percent-civilian-gatherers 15)
(disable-self)
)
; explore a bit at need
(defrule
(game-time < 600)
(military-population == 0)
(civilian-population < 15)
(or
(dropsite-min-distance food == -1)
(civilian-population > 10)
)
=>
(set-strategic-number sn-minimum-civilian-explorers 1)
(set-strategic-number sn-cap-civilian-explorers 1)
(set-strategic-number sn-percent-civilian-explorers 5)
(set-strategic-number sn-percent-civilian-builders 15)
(set-strategic-number sn-percent-civilian-gatherers 80)
)
; Shut the explorers off when we get enough food
(defrule
(strategic-number sn-percent-civilian-explorers > 0)
(or
(or
(game-time > 900)
(dropsite-min-distance food > -1)
)
(military-population > 0)
)
=>
(set-strategic-number sn-percent-civilian-explorers 0)
(set-strategic-number sn-minimum-civilian-explorers 0)
(set-strategic-number sn-cap-civilian-explorers 0)
(set-strategic-number sn-percent-civilian-builders 15)
(set-strategic-number sn-percent-civilian-gatherers 85)
)
(defrule
(strategic-number sn-number-explore-groups != 1)
=>
(set-strategic-number sn-number-explore-groups 1)
)
(defrule
(building-type-count town-center < 1)
(can-build town-center)
=>
(build town-center)
(disable-self)
)
; villager count
(defrule
(current-age == dark-age)
(difficulty <= moderate)
(civilian-population < civ-feudal)
(civilian-population < 40)
(can-train villager)
=>
(train villager)
)
;maintain housing
(defrule
(housing-headroom < 5)
(population-headroom > 0)
(can-build house)
=>
(build house)
)
#load-if-defined DIFFICULTY-EASIEST
(defrule
(unit-type-count-total villager <= 5)
(can-train villager)
=>
(train villager)
)
#end-if
#load-if-defined DIFFICULTY-EASY
(defrule
(unit-type-count-total villager <= 10)
(can-train villager)
=>
(train villager)
)
#end-if
;maintain a town center
(defrule
(difficulty <= moderate)
(game-time > 45)
(building-type-count town-center < 1)
(can-build town-center)
=>
(build town-center)
)
; Build a mill when we find food
(defrule
(building-type-count-total mill == 0)
(or
(building-type-count-total house > 0)
(or
(civ-selected hun)
(building-type-count castle > 0)
)
)
(or
(resource-found food)
(game-time > 900)
)
(can-build mill)
=>
(build mill)
)
(defrule
(game-time > 90)
(resource-found wood)
(or
(building-type-count-total house > 0)
(or
(civ-selected hun)
(building-type-count castle > 0)
)
)
(building-type-count-total lumber-camp == 0)
(can-build lumber-camp)
=>
(build lumber-camp)
)
;build farms
(defrule
(current-age < castle-age)
(difficulty <= hard)
(building-type-count-total lumber-camp > 0)
(building-type-count-total mill > 0)
(building-type-count-total farm < 10)
(can-build farm)
=>
(build farm)
)
(defrule
(building-type-count-total lumber-camp > 0)
(building-type-count-total mill > 0)
(idle-farm-count <= 1)
(sheep-and-forage-too-far)
(can-build farm)
=>
(build farm)
)
(defrule
(current-age == dark-age)
(building-type-count-total mining-camp == 0)
(goal resource-needed GOLD)
(resource-found gold)
(can-build mining-camp)
=>
(build mining-camp)
)
;=======================FEUDAL AGE RULES
(defrule
(current-age >= feudal-age)
=>
(set-strategic-number sn-maximum-town-size feudal-town-size)
(set-strategic-number sn-percent-civilian-builders 15)
(set-strategic-number sn-percent-civilian-gatherers 85)
(set-strategic-number sn-camp-max-distance 35)
(set-strategic-number sn-mill-max-distance 35)
(set-strategic-number sn-group-form-distance 20)
(disable-self)
)
(defrule
(current-age >= feudal-age)
=>
(set-goal age-advancement NO)
(enable-timer t-lumbercamp 1)
(disable-timer t-ageup)
(disable-self)
)
(defrule
(current-age == feudal-age)
(current-age-time < 600)
(wood-amount > 500)
=>
(set-strategic-number sn-percent-civilian-builders 50)
(set-strategic-number sn-percent-civilian-gatherers 50)
(disable-self)
)
(defrule
(current-age == feudal-age)
(current-age-time >= 600)
=>
(set-strategic-number sn-percent-civilian-builders 15)
(set-strategic-number sn-percent-civilian-gatherers 85)
(disable-self)
)
; villager count
(defrule
(current-age == feudal-age)
(difficulty <= moderate)
(civilian-population < civ-castle)
(civilian-population < 40)
(can-train villager)
=>
(train villager)
)
; Build camps at need
(defrule
(timer-triggered t-lumbercamp)
(current-age >= feudal-age)
(resource-found wood)
(dropsite-min-distance wood > 5)
(can-build lumber-camp)
=>
(build lumber-camp)
)
(defrule
(current-age >= feudal-age)
(resource-found gold)
(building-type-count-total mining-camp == 0)
(can-build-with-escrow mining-camp)
=>
(release-escrow wood)
(build mining-camp)
)
(defrule
(current-age >= feudal-age)
(resource-found stone)
(building-type-count-total mining-camp == 1)
(can-build-with-escrow mining-camp)
=>
(release-escrow wood)
(build mining-camp)
)
(defrule
(timer-triggered t-lumbercamp)
(current-age >= feudal-age)
(building-type-count-total market > 0)
(building-type-count-total blacksmith > 0)
(building-type-count-total mining-camp >= 1)
(building-type-count-total mining-camp < mining-count)
(resource-found gold)
(resource-found stone)
(or
(dropsite-min-distance gold > 7)
(dropsite-min-distance stone > 7)
)
(can-build mining-camp)
=>
(build mining-camp)
)
(defrule
(timer-triggered t-lumbercamp)
=>
(disable-timer t-lumbercamp)
(enable-timer t-lumbercamp 30)
)
;feudal age market -- always keep a market handy!
(defrule
(building-type-count-total market == 0)
(can-build-with-escrow market)
=>
(release-escrow wood)
(build market)
)
(defrule
(building-type-count-total market > 0)
(building-type-count-total blacksmith == 0)
(can-build-with-escrow blacksmith)
=>
(release-escrow wood)
(build blacksmith)
)
(defrule
(current-age >= feudal-age)
(current-age-time > 300)
(building-type-count-total mill < feudal-mill-count)
(wood-amount > 400)
(can-build mill)
=>
(build mill)
)
;======================== CASTLE AGE RULES
;see age advancement rules for strategic number-settings
(defrule
(current-age >= castle-age)
=>
(set-strategic-number sn-maximum-town-size castle-town-size)
(set-strategic-number sn-percent-civilian-builders 15)
(set-strategic-number sn-percent-civilian-gatherers 85)
(set-strategic-number sn-blot-exploration-map 1)
(set-strategic-number sn-camp-max-distance 50)
(set-strategic-number sn-mill-max-distance 50)
(set-strategic-number sn-group-form-distance 30)
(set-goal age-advancement NO)
(disable-timer t-ageup)
(disable-self)
)
; villager count
(defrule
(current-age == castle-age)
(difficulty <= moderate)
(civilian-population < deathmatch-unit-max)
(civilian-population < 40)
(can-train villager)
=>
(train villager)
)
;University & maintain it
(defrule
(building-type-count-total university == 0)
(wood-amount > 500)
(can-build-with-escrow university)
=>
(release-escrow wood)
(build university)
)
(defrule
(building-type-count-total monastery == 0)
(wood-amount > 500)
(can-build-with-escrow monastery)
=>
(release-escrow wood)
(build monastery)
)
(defrule
(current-age >= castle-age)
(current-age-time > 300)
(building-type-count-total mill < castle-mill-count)
(wood-amount > 500)
(can-build mill)
=>
(build mill)
)
;=============================IMPERIAL AGE RULES
;see age advancement rules for strategic number-settings
(defrule
(current-age == imperial-age)
=>
(set-strategic-number sn-maximum-town-size imperial-town-size)
(set-strategic-number sn-percent-civilian-builders 15)
(set-strategic-number sn-percent-civilian-gatherers 85)
(set-strategic-number sn-camp-max-distance 50)
(set-strategic-number sn-mill-max-distance 50)
(set-goal age-advancement NO)
(disable-self)
)
(defrule
(current-age == imperial-age)
(difficulty <= moderate)
(civilian-population < 40)
(can-train villager)
=>
(train villager)
)
;another town center?
(defrule
(current-age == imperial-age)
(difficulty > hard)
(building-type-count town-center < town-center-count)
(wood-amount > 400)
(can-build town-center)
=>
(build town-center)
)
(defrule
(current-age == imperial-age)
(difficulty <= hard)
(current-age-time > 300)
(building-type-count-total mill < imperial-mill-count)
(wood-amount > 700)
(can-build mill)
=>
(build mill)
)